/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tk.eigh.ksvg.component.animation;

import ksvg.animation.Animate;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFComponent;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;
import tk.eigh.ksvg.types.SVGNumber;

/**
 * <p>The <a href="http://www.w3.org/TR/SVG/animate.html#AnimateMotionElement">‘animateMotion’</a> element causes a referenced
 * element to move along a motion path.</p>
 *
 * <p>Except for any SVG-specific rules explicitly mentioned in this
 * specification, the normative definition for this element is the <a
 * href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/"><cite>SMIL
 * Animation</cite></a> specification. In particular, see <a
 * href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#animateMotionElement">SMIL
 * Animation: 'animateMotion' element</a> ([<a
 * href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/">SMILANIM</a>], section 4.3).</p>
 */
@JSFComponent(name = "svg:AnimateMotion",
type = "tk.eigh.svg.AnimateMotion",
family = "animation.AnimateMotion",
clazz = "ksvg.animation.AnimateMotion",
tagClass = "ksvg.tags.animation.AnimateMotionTag",
defaultRendererType = "animation.SVGAnimateMotionRenderer")
public abstract class AbstractAnimateMotion extends Animate {

    /**
     * path = "&lt;path-data&gt;"<br/>The motion path,
     * expressed in the same format and interpreted the same way as the <a
     * href="http://www.w3.org/TR/SVG/paths.html#DAttribute">‘d’</a>
     * attribute on the <a href="http://www.w3.org/TR/SVG/paths.html#PathElement">‘path’</a> element. The effect of a motion
     * path animation is to add a supplemental transformation matrix onto the
     * CTM for the referenced object which causes a translation along the x- and
     * y-axes of the current user coordinate system by the computed X and Y
     * values computed over time.
     */
    @JSFProperty
    public abstract String getPath();

    /**
     * keyPoints = "&lt;list-of-numbers&gt;"<br/><p><a
     * href="http://www.w3.org/TR/SVG/animate.html#KeyPointsAttribute">‘keyPoints’</a> takes a semicolon-separated list
     * of floating point values between 0 and 1 and indicates how far along the
     * motion path the object shall move at the moment in time specified by
     * corresponding <a href="http://www.w3.org/TR/SVG/animate.html#KeyTimesAttribute">‘keyTimes’</a> value. Distance calculations use
     * the user agent's <a href="http://www.w3.org/TR/SVG/paths.html#DistanceAlongAPath">distance along
     * the path</a> algorithm. Each progress value in the list corresponds to a
     * value in the <a href="http://www.w3.org/TR/SVG/animate.html#KeyTimesAttribute">‘keyTimes’</a> attribute list.</p> <p>If a list
     * of <a href="http://www.w3.org/TR/SVG/animate.html#KeyPointsAttribute">‘keyPoints’</a> is specified, there must be
     * exactly as many values in the <a
     * href="http://www.w3.org/TR/SVG/animate.html#KeyPointsAttribute">‘keyPoints’</a> list as in the <a
     * href="http://www.w3.org/TR/SVG/animate.html#KeyTimesAttribute">‘keyTimes’</a> list.</p> <p>If there are any
     * errors in the <a href="http://www.w3.org/TR/SVG/animate.html#KeyPointsAttribute">‘keyPoints’</a> specification (bad values, too
     * many or too few values), then the document is in error (see <a
     * href="http://www.w3.org/TR/SVG/implnote.html#ErrorProcessing">Error processing</a>).</p>
     */
    @JSFProperty
    public abstract String getKeyPoints();

    /**
     * rotate = "<a
     * href="http://www.w3.org/TR/SVG/types.html#DataTypeNumber">&lt;number&gt;</a> | auto |
     * auto-reverse"<br/> <p>The <a
     * href="http://www.w3.org/TR/SVG/animate.html#RotateAttribute">‘rotate’</a> attribute post-multiplies a
     * supplemental transformation matrix onto the CTM of the target element to
     * apply a rotation transformation about the origin of the current user
     * coordinate system. The rotation transformation is applied after the
     * supplemental translation transformation that is computed due to the <a
     * href="http://www.w3.org/TR/SVG/animate.html#PathAttribute">‘path’</a> attribute.</p>
     *
     * <dl><dt>auto</dt><dd>Indicates that the
     * object is rotated over time by the angle of the direction (i.e.,
     * directional tangent vector) of the motion path.</dd><dt>auto-reverse</dt><dd>Indicates that the object
     * is rotated over time by the angle of the direction (i.e., directional
     * tangent vector) of the motion path plus 180 degrees.</dd><dt><a
     * href="http://www.w3.org/TR/SVG/types.html#DataTypeNumber">&lt;number&gt;</a></dt><dd>Indicates
     * that the target element has a constant rotation transformation applied to
     * it, where the rotation angle is the specified number of
     * degrees.</dd></dl>
     *
     * <p>The default value is '0'.</p>
     */
    @JSFProperty
    public abstract SVGNumber getRotate();

    /**
     * origin = "default"<br/>The <a
     * href="http://www.w3.org/TR/SVG/animate.html#OriginAttribute">‘origin’</a> attribute is <a
     * href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#MotionOriginAttribute">defined
     * in the SMIL Animation specification</a> ([<a
     * href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/">SMILANIM</a>], section 4.3). It has no
     * effect in SVG.
     */
    @JSFProperty
    public abstract String getOrigin();
}